home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 April / EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso / EARCD / comm / fido / OBManager.lha / OBManager / OutBoundManager < prev    next >
Text File  |  1996-11-14  |  17KB  |  485 lines

  1. /*
  2.  * OutBoundManager
  3.  *
  4.  * USAGE: OutBoundManager [nodes]
  5.  *
  6.  * OutBoundManager let's poll nodes that have waiting mail...
  7.  * Based on WaitingMail.zrx
  8.  *
  9.  * REQUIREMENTS:
  10.  *    LIBS:rexxsupport.library
  11.  *    LIBS:rexxdossupport.library
  12.  *    REXX:mui/RunMUIrexx
  13.  *    REXX:mui/About
  14.  *    REXX:mail/Poll
  15.  *    REXX:db/Config
  16.  *    REXX:dos/ReadBlock
  17.  *    REXX:dos/WriteBlock
  18.  *    REXX:dos/Error
  19.  *
  20.  * $(C): (1995, Rocco Coluccelli, Bologna)
  21.  * $VER: OutBoundManager 0.40 (11.Nov.1996)
  22.  */
  23.  
  24. OPTIONS RESULTS
  25. SIGNAL ON SYNTAX; SIGNAL ON ERROR; SIGNAL ON HALT
  26.  
  27. lib = "rexxdossupport.library"; IF ~SHOW('L',lib) THEN CALL ADDLIB(lib,5,-30)
  28. lib = "rexxsupport.library"; IF ~SHOW('L',lib) THEN CALL ADDLIB(lib,0,-30)
  29.  
  30. IF ARG(1) ~= "" THEN RETURN 'mail/Poll'(ARG())
  31.  
  32. /*
  33.  *    Init...
  34.  */
  35. m. = ""
  36.  
  37. PARSE SOURCE . . . argv .
  38. m.prg_path = PathPart(argv)
  39. m.prg_name = FilePart(argv)
  40. CALL PRAGMA('D',m.prg_path)
  41.  
  42. m.tmp_file = "T:ob_man.tmp"
  43. m.inf_tmpl = "cfg.db_node||'00'x||cfg.db_name||'00'x||cfg.db_aka"
  44. m.env_file = "ENV:Poll.cfg"
  45. m.cfg_file = "REXX:mail/Poll.cfg"
  46. m.cfg_last = m.cfg_file
  47. m.cfg_tmpl = "cfg.cyc.1||'00'x||cfg.cyc.2||'00'x||cfg.cyc.3||'00'x||cfg.swt.3||'00'x||cfg.swt.4||'00'x||cfg.swt.5||'00'x||cfg.swt.6||'00'x||cfg.swt.7||'00'x||cfg.sld.1||'00'x||cfg.sld.2||'00'x||cfg.sld.3||'00'x||cfg.pop.1||'00'x||cfg.pop.2||'00'x||cfg.pop.3||'00'x||cfg.pop.4||'00'x||cfg.pop.5||'00'x||cfg.pop.6||'00'x||cfg.pop.7"
  48. m.cfg_deft = 'cfg.="";cfg.cyc.1=0;cfg.cyc.2=1;cfg.pop.1="MAIL:OutBound/";cfg.pop.2="T:polling";cfg.pop.4="SAY %S"'
  49. INTERPRET 'db/Config'("LOAD",m.cfg_file,m.cfg_deft)
  50.  
  51. m.prg_port = "OBM"
  52. m.gui_port = 'mui/RunMUIrexx'(m.prg_port,m.prg_name".help")
  53. IF m.gui_port = "" THEN EXIT 20
  54. ADDRESS VALUE m.gui_port
  55.  
  56. IF ~OPENPORT(m.prg_port) THEN CALL fun.QUIT(20)
  57.  
  58. m.getnode  = "MAIL:bin/Getnode"
  59.  
  60. m.pic1 = '"Icons/OBM_poll"'
  61. m.pic2 = '"Icons/OBM_info"'
  62. m.pic3 = '"Icons/OBM_trash"'
  63.  
  64.  
  65. /*
  66.  *    MUI attributes & methods
  67.  */
  68. FixWidthTxt =                     0x8042d044 /* V4  i.. STRPTR */
  69. Dirlist_FilesOnly =               0x8042896a /* V4  is. BOOL */
  70. List_AdjustWidth =                0x8042354a /* V4  i.. BOOL */
  71. Listview_DragType =               0x80425cd3 /* V11 isg LONG */
  72. Listview_MultiSelect =            0x80427e08 /* V7  i.. LONG */
  73.  
  74. /*
  75.  *    Main window
  76.  */
  77. hlp.0 = '"\033cWaiting nodes in\nyour outbound..."'
  78. hlp.1 = '"\033cCall the selected\nor dropped nodes..."'
  79. hlp.2 = '"\033cMore about the marked\nor dropped node..."'
  80. hlp.3 = '"\033cKill packets of\ndropped nodes..."'
  81. 'Window ID main TITLE "OutBound - Manager" COMMAND "Quit 0" PORT' m.prg_port
  82.     'Menu LABEL' "General"
  83.         'Item ID b0 COMMAND "Set_Win cfg" PORT' m.prg_port 'LABEL' "Configuration"
  84.         'Item ID b4 COMMAND "Set_Win inf" PORT' m.prg_port 'LABEL' "Information"
  85.         'Item ATTRS 0x804218be -1'
  86.         argv = m.gui_port 'PRGPORT' m.prg_port 'PRGPATH' m.prg_name
  87.         'Item COMMAND "REXX:mui/About' argv '" ATTRS 0x80422030 "?" LABEL' "About"
  88.         'Item ATTRS 0x804218be -1'
  89.         'Item COMMAND "Quit 0" PORT' m.prg_port 'ATTRS 0x80422030 "Q" LABEL' "Quit"
  90.     'EndMenu'
  91.  
  92.     'Group HORIZ'
  93.         'Group FRAME'
  94.             'Button ID b1 NODE b1 HELP' hlp.1 'COMMAND "Poll" PRESS PORT' m.prg_port 'ICON' m.pic1 'ATTRS 0x80421ce7 1 LABEL' "Poll"
  95.             'Button ID b2 NODE b2 HELP' hlp.2 'COMMAND "Set_Win inf" PRESS PORT' m.prg_port 'ICON' m.pic2 'ATTRS 0x80421ce7 1 LABEL' "Info"
  96.             'Button ID b3 NODE b3 HELP' hlp.3 'COMMAND "Kill %s" DROP PORT' m.prg_port 'ICON' m.pic3 'LABEL' "Kill"
  97.         'EndGroup'
  98.         'DirList ID Wait NODE wait HELP' hlp.0 'COMMAND "Set_Win inf %s" PRESS PORT' m.prg_port 'ATTRS 0x80421ce7 1' Dirlist_FilesOnly 1 Listview_MultiSelect 1 Listview_DragType 1 '0x80423c0a "P \033r C 0"' FixWidthTxt COPIES("#",16) '0x80423e66 "\033b\033c\033uOutBound"'
  99.     'EndGroup'
  100. 'EndWindow'
  101. 'DirList ID Wait PATH "'cfg.pop.1'" PATTERN "#?.(INF|CLO|FLO|REQ)" REREAD'
  102. 'Button ID b1 COMMAND "Poll %s" DROP PORT' m.prg_port
  103. 'Button ID b2 COMMAND "Set_Win inf %s" DROP PORT' m.prg_port
  104.  
  105.  
  106. DO FOREVER
  107.     CALL WAITPKT(m.prg_port); pkt = GETPKT(m.prg_port); IF pkt == NULL() THEN ITERATE
  108.  
  109.     argv = GETARG(pkt)
  110.     INTERPRET "CALL fun."WORD(argv,1)"(SUBWORD(argv,2))"
  111.  
  112.     CALL REPLY(pkt)
  113. END
  114.  
  115. EXIT
  116.  
  117.  
  118. Syntax:
  119. Error:
  120.     PARSE SOURCE infln
  121.     CALL 'dos/error'(rc,sigl,infln,SOURCELINE(sigl))
  122. Halt:
  123.     CALL fun.QUIT(5)
  124.  
  125. /*
  126.  *    Quit RC
  127.  */
  128. fun.QUIT:
  129.     'Quit'
  130.     IF SHOW('P',m.prg_port) THEN CALL CLOSEPORT(m.prg_port)
  131.     EXIT ARG(1)
  132.  
  133. /*
  134.  *    Set_Polling COMMAND/A
  135.  */
  136. fun.SET_POLLING: PROCEDURE EXPOSE m.
  137. PARSE ARG cmd
  138.     IF cmd = "" THEN
  139.         'PopAsl ID pop.4 CONTENT' "SAY %S"
  140.     ELSE IF POS("%S",cmd) = 0 THEN 'PopAsl ID pop.4 CONTENT' cmd "%S"
  141.     RETURN
  142.  
  143. /*
  144.  *    Set_Mailer
  145.  */
  146. fun.SET_MAILER: PROCEDURE
  147.     'Cycle ID cyc.1 ATTRS 0x80421788'
  148.     IF result = 0 THEN
  149.         'Group ID g3 ATTRS 0x80429ba8 0'  /* Internal */
  150.     ELSE 'Group ID g2 ATTRS 0x80429ba8 0' /* External */
  151.     RETURN
  152.  
  153. /*
  154.  *    Set_Aka AKA/A
  155.  */
  156. fun.SET_AKA: PROCEDURE
  157.     'String ID aka CONTENT' ARG(1)
  158.     'Object ID sl.0 ATTRS 0x8042d4b2 0 0x8042fea6' (80 - LENGTH(ARG(1)))
  159.     RETURN    /* 80 == prop_entries */
  160.  
  161. /*
  162.  *    Set_Win ID/A,ARGV/K/F
  163.  */
  164. fun.SET_WIN: PROCEDURE EXPOSE m. cfg.
  165. PARSE ARG id argv
  166.     SELECT
  167.         WHEN id = "cfg" & m.cfg_win ~= 1 THEN CALL cfg_win()
  168.         WHEN id = "inf" & m.inf_win ~= 1 THEN CALL inf_win(argv)
  169.         OTHERWISE 'Window ID' id 'ATTRS 0x80428aa0 1'
  170.     END
  171.     RETURN
  172.  
  173. /*
  174.  *    Config SAVE/S,LOAD/S,USE/S,DEFAULT/S
  175.  */
  176. fun.CONFIG: PROCEDURE EXPOSE m. cfg.
  177.     IF ~ReadArgs(ARG(1),"SAVE/S,LOAD/S,USE/S,DEFAULT/S") THEN RETURN
  178.     IF use | save THEN DO
  179.         IF m.cfg_win = 1 THEN DO
  180.             'Window ID cfg ATTRS 0x80428aa0 0'; CALL get_all(); END
  181.         m.cfg_last = m.env_file; IF save THEN m.cfg_last = m.cfg_file
  182.         INTERPRET "CALL 'db/Config'('SAVE',m.cfg_last,m.cfg_tmpl,"m.cfg_tmpl")"
  183.     END
  184.     ELSE IF load | default THEN DO
  185.         IF load THEN
  186.             INTERPRET 'db/Config'("LOAD",m.cfg_file,m.cfg_deft)
  187.         ELSE INTERPRET m.cfg_deft
  188.         CALL set_all()
  189.     END
  190.     RETURN
  191.  
  192. /*
  193.  *    Poll FILE/M
  194.  */
  195. fun.POLL: PROCEDURE EXPOSE m. cfg.
  196. ARG argv
  197.     DO UNTIL result = ""; 'DirList ID Wait'; argv = argv result; END
  198.     IF argv = "" THEN RETURN rescan()
  199.     files = ""
  200.     'Window ID main ATTRS 0x80428aa0 0'
  201.     DO n = 1 FOR WORDS(argv)
  202.         file = FilePart(WORD(argv,n))
  203.         IF UPPER(RIGHT(file,3)) = "INF" THEN files = file files; ELSE files = files file
  204.     END
  205.     CALL fun.CONFIG('USE')    /* save the configuration into ENV */
  206.     CALL 'mail/Poll'(files,m.cfg_last)
  207.     'Window ID main ATTRS 0x80428aa0 1'
  208.     RETURN rescan()
  209.  
  210. /*
  211.  *    Info FILE
  212.  */
  213. fun.INFO: PROCEDURE EXPOSE m. cfg.
  214. ARG file .
  215.     'Window ID inf ATTRS 0x80428aa0 1'
  216.     IF file = "" THEN DO
  217.         'DirList ID Wait'; IF result = "" THEN RETURN
  218.         file = result; END
  219.     CALL fun.INFO_GET(FilePart(file))
  220.     RETURN
  221.  
  222. /*
  223.  *    Info_Get NODE
  224.  */
  225. fun.INFO_GET: PROCEDURE EXPOSE m. cfg.
  226.     'Window ID inf ATTRS 0x8042e7db 1'
  227.     PARSE VALUE TRANSLATE(ARG(1),"   ",":/.") WITH zn nt hb .
  228.     ADDRESS COMMAND m.getnode '>'m.tmp_file zn":"nt"/"hb".0"
  229.     PARSE VALUE 'dos/ReadBlock'(m.tmp_file,'tag.METHODS="DEL"') WITH 'Node ' inf.1 ', "' inf.2 '" is in ' inf.4 '0a'x 'Operated by ' inf.3 '0a'x 'Phone ' inf.5 ','
  230.  
  231.     IF inf.5 = "" THEN inf.1 = ""
  232.     'Method ID g1 0x8042549a 0x8042ed48' (inf.1 ~= "")
  233.  
  234.     file = AddPart(cfg.pop.1,zn"."nt"."hb".0.INF")
  235.     IF ~EXISTS(file) THEN
  236.         CALL fun.SET_AKA(inf.1)
  237.     ELSE DO
  238.         INTERPRET 'db/Config'("LOAD",file)
  239.         CALL fun.SET_AKA(cfg.db_aka)
  240.         inf.1 = cfg.db_node; inf.2 = cfg.db_name
  241.     END
  242.     DO n = 1 TO 2; 'String ID inf.'n 'CONTENT' inf.n; END
  243.     DO n = 3 TO 5; 'Text ID inf.'n 'LABEL' inf.n; END
  244.     'Window ID inf ATTRS 0x8042e7db 0'
  245.     RETURN
  246.  
  247. /*
  248.  *    Info_Add
  249.  */
  250. fun.INFO_ADD: PROCEDURE EXPOSE m. cfg.
  251.     'String ID inf.1'; cfg.db_node = result
  252.     'String ID inf.2'; cfg.db_name = result
  253.     'String ID aka'; cfg.db_aka = result
  254.     INTERPRET "CALL 'db/Config'('SAVE'," || AddPart(cfg.pop.1,TRANSLATE(cfg.db_node,"..",":/")".INF") || ",m.inf_tmpl,"m.inf_tmpl")"
  255.     RETURN rescan()
  256.  
  257. /*
  258.  *    Info_Del
  259.  */
  260. fun.INFO_DEL: PROCEDURE EXPOSE m. cfg.
  261.     'String ID inf.1'
  262.     CALL Delete(AddPart(cfg.pop.1,TRANSLATE(result,"..",":/")".INF"))
  263.     RETURN rescan()
  264.  
  265. /*
  266.  *    Kill
  267.  */
  268. fun.KILL: PROCEDURE EXPOSE m. cfg.
  269.     IF ~ReadArgs(ARG(1),"FILE/M") THEN RETURN
  270.     DO n = 0 FOR file.count
  271.         xt = UPPER(RIGHT(file.n,3))
  272.         IF xt = "INF" THEN DO
  273.             'Request TITLE' "WARNING!" 'GADGETS' "_OK" 'STRING' "\033c\033b\n" file.n "\n\033n\nYou can remove an INF file only\nusing the information window..."; ITERATE; END
  274.         'Request TITLE' "DANGER!" 'GADGETS' "_Sure|Oh_No" 'STRING' "\033cDo you really want\nto delete the packet:\n\033b" file.n "\033n\nand its related files?"
  275.         IF result = 0 THEN ITERATE
  276.         'Request TITLE' "DANGER!" 'GADGETS' "_Suuure!|No_No!" 'STRING' "\033c\033bReally?\033n\nPlease, think twice..."
  277.         IF result = 0 THEN ITERATE
  278.         argv = 'dos/ReadBlock'(file.n),'tag.METHODS="DELETE"')
  279.         IF xt = "REQ" THEN ITERATE
  280.         DO UNTIL argv = ""; PARSE VAR argv =2 file '0a'x argv; CALL Delete(file); END
  281.     END
  282.     RETURN rescan()
  283.  
  284. /*
  285.  *    Rescan outbound directory
  286.  */
  287. rescan: PROCEDURE EXPOSE cfg.
  288.     'DirList ID Wait PATH "'cfg.pop.1'" REREAD'
  289.     RETURN 1
  290.  
  291. /*
  292.  *    Set all configurated values...
  293.  */
  294. set_all: PROCEDURE EXPOSE m. cfg.
  295.     DO n = 1 TO 7; 'PopAsl ID pop.'n 'CONTENT' cfg.pop.n; END
  296.     DO n = 3 TO 5; 'Switch ID e'n 'ATTRS 0x8042654b' cfg.swt.n; END
  297.     DO n = 1 TO 3; 'Cycle ID cyc.'n 'ATTRS 0x80421788' cfg.cyc.n; END
  298.     DO n = 1 TO 3; 'Slider ID sl.'n 'ATTRS 0x8042ae3a' cfg.sld.n; END
  299.     RETURN
  300.  
  301. /*
  302.  *    Get all configurated values...
  303.  */
  304. get_all: PROCEDURE EXPOSE m. cfg.
  305.     DO n = 1 TO 7; 'PopAsl ID pop.'n; cfg.pop.n = result; END
  306.     DO n = 3 TO 5; 'Switch ID e'n 'ATTRS 0x8042654b'; cfg.swt.n = result; END
  307.     DO n = 1 TO 3; 'Cycle ID cyc.'n 'ATTRS 0x80421788'; cfg.cyc.n = result; END
  308.     DO n = 1 TO 3; 'Slider ID sl.'n; cfg.sld.n = result; END
  309.     RETURN
  310.  
  311.  
  312. /*
  313.  *    Configuration window
  314.  */
  315. cfg_win: PROCEDURE EXPOSE m. cfg. hlp.
  316. hlp.4  = '"\033cStart the mailer using\nthe built-in routines or\nspecifing commands to do so..."'
  317. hlp.5  = '"\033cConfigure how the scheduler\nwill pass addresses to the mailer..."'
  318. hlp.6  = '"\033cOutput file in \033bScheduler\033n mode..."'
  319. hlp.7  = '"\033cCommand to start the mailer...\n(E = AmigaDOS Executable)\n(R = ARexx command line)"'
  320. hlp.8  = '"\033cCommand to do the polling..."'
  321. hlp.9  = '"\033cCommand to quit the mailer..."'
  322. hlp.10 = '"\033cARexx command line to be executed\nafter session opening..."'
  323. hlp.11 = '"\033cARexx command line to be executed\nbefore session closing..."'
  324. 'Window ID cfg TITLE' "Configuration" 'COMMAND "Config USE" PORT' m.prg_port
  325.     'Menu LABEL' "Configuration"
  326.         'Item COMMAND "Config SAVE" PORT' m.prg_port 'ATTRS 0x80422030 "S" LABEL "Save configuration"'
  327.         'Item COMMAND "Config DEFAULT" PORT' m.prg_port 'ATTRS 0x80422030 "D" LABEL "Reset to default"'
  328.         'Item COMMAND "Config LOAD" PORT' m.prg_port 'ATTRS 0x80422030 "L" LABEL "Last saved"'
  329.     'EndMenu'
  330.  
  331.     'Group REGISTER LABELS "Paths,Commands" ATTRS 0x80421ce7 1'
  332.         /*** PATHS ***/
  333.         'Group FRAME'
  334.             'Label LEFT LABEL' "OutBound directory"
  335.             'PopAsl ID pop.1 NODE pop.1 COMMAND "DirList ID Wait REREAD PATH %s" PORT' m.gui_port 'ATTRS 0x80421ce7 1 0x8008002F 1'    /* ASLFR_DrawersOnly */
  336.         'EndGroup'
  337.         /*** SCHEDULER ***/
  338.         'Group'
  339.             'Group HORIZ'
  340.                 'Label LEFT LABEL' "   Mailer:"
  341.                 'Cycle ID cyc.1 NODE cyc.1 HELP' hlp.4 'COMMAND "Set_Mailer" PORT' m.prg_port 'ATTRS 0x80421ce7 1 0x80421788 1 LABELS "External,TrapDoor,GMS"'
  342.             'EndGroup'
  343.  
  344.             'Group ID g2 ATTRS 0x80429ba8 0'    /* Show_Me */
  345.                 'Group HORIZ'
  346.                     'Label LEFT LABEL' "Scheduler:"
  347.                     'Cycle ID cyc.2 NODE cyc.2 HELP' hlp.5 'ATTRS 0x80421ce7 1 LABELS "Node by Node,Node with Aka,Do All Node,Scheduler"'
  348.                     'PopAsl ID pop.2 NODE pop.2 HELP' hlp.6 'ATTRS 0x80421ce7 1 0x80424984 240'
  349.                 'EndGroup'
  350.                 /*           HorSpacing   Columns */
  351.                 'Group FRAME ATTRS 0x8042c651 0 0x8042f416 5 LABEL' '"Mailer Commands"'
  352.                     CALL obj_cmd(3 7,"Start"); CALL obj_swt(3)
  353.                     CALL obj_cmd(4 8,"Poll","Set_Polling %s",m.prg_port); CALL obj_swt(4)
  354.                     CALL obj_cmd(5 9,"Quit"); CALL obj_swt(5)
  355.                 'EndGroup'
  356.             'EndGroup'
  357.  
  358.             'Group ID g3 ATTRS 0x80429ba8 1'
  359.                 'Group HORIZ'
  360.                     'Label LEFT LABEL' "Scheduler:"
  361.                     'Cycle ID cyc.3 NODE cyc.2 HELP' hlp.5 'ATTRS 0x80421ce7 1 LABELS "Node with Aka,Do All Node"'
  362.                     'Space HORIZ'
  363.                 'EndGroup'
  364.                 'Group HORIZ FRAME LABEL' '"Mailer Settings"'
  365.                     'Space HORIZ 2'
  366.                     CALL obj_sld(2,"Retries",1 50 100)
  367.                     CALL obj_sld(3,"Delay",1 120 200)
  368.                     'Group ID g4 HORIZ ATTRS 0x80423661' (cfg.cyc.1 = 1)
  369.                         CALL obj_sld(1,"Line",0 20 25)
  370.                     'EndGroup'
  371.                     'Space HORIZ 2'
  372.                 'EndGroup'
  373.                 'Group FRAME ATTRS 0x8042f416 2 LABEL' '"Session ARexx Commands"'
  374.                     CALL obj_str(6 10,"Before")
  375.                     CALL obj_str(7 11,"After")
  376.                 'EndGroup'
  377.             'EndGroup'
  378.         'EndGroup'
  379.     'EndGroup'
  380. 'EndWindow'; m.cfg_win = 1
  381. /*
  382.  *               Notify     CycleSet   EveryTime           Set        Disabled */
  383. 'method ID cyc.2 0x8042c9cb 0x80421788 0x49893131 @pop.2 3 0x8042549a 0x80423661 1'
  384. 'method ID cyc.1 0x8042c9cb 0x80421788 0x49893131 @g4    3 0x8042549a 0x80423661 1'
  385. /*               Notify     CycleSet              Set        Disabled */
  386. 'method ID cyc.2 0x8042c9cb 0x80421788 3 @pop.2 3 0x8042549a 0x80423661 0'
  387. 'method ID cyc.2 0x8042c9cb 0x80421788 0 @pop.3 3 0x8042549a 0x80423661 0'
  388. 'method ID cyc.2 0x8042c9cb 0x80421788 1 @pop.3 3 0x8042549a 0x80423661 0'
  389. 'method ID cyc.2 0x8042c9cb 0x80421788 2 @pop.3 3 0x8042549a 0x80423661 1'
  390. 'method ID cyc.2 0x8042c9cb 0x80421788 3 @pop.3 3 0x8042549a 0x80423661 1'
  391. 'method ID cyc.1 0x8042c9cb 0x80421788 2 @g4    3 0x8042549a 0x80423661 0'
  392. /*               Notify     Disabled   EveryTime           Set        Disabled   TriggerValue */
  393. 'method ID pop.3 0x8042c9cb 0x80423661 0x49893131 @pop.5 3 0x8042549a 0x80423661 0x49893131'
  394. /*
  395.  *            Notify     ShowMe             Set        ShowMe */
  396. 'method ID g2 0x8042c9cb 0x80429ba8 0 @g3 3 0x8042549a 0x80429ba8 1'
  397. 'method ID g3 0x8042c9cb 0x80429ba8 0 @g2 3 0x8042549a 0x80429ba8 1'
  398. 'Item ID b0 COMMAND "Window ID cfg ATTRS 0x80428aa0 1" PORT' m.gui_port
  399. CALL set_all()
  400. RETURN
  401.  
  402. inf_win: PROCEDURE EXPOSE m. cfg. hlp.
  403. hlp.12 = '"\033cEnter a node address\n(must be in nodelist)..."'
  404. hlp.13 = '"\033cSpecify the main aka addresses\nfor the given node, one entry\nfor every telephone line..."'
  405. hlp.14 = '"\033cChange node''s name\nbefore storing data\nin the database..."'
  406. 'Window ID inf TITLE' "Information" 'COMMAND "Window ID inf ATTRS 0x80428aa0 0" PORT' m.gui_port
  407.     'Menu ID g1 ATTRS 0x8042ed48 0 LABEL' "Information"
  408.         'Item COMMAND "Info_Add" PORT' m.prg_port 'ATTRS 0x80422030 "S" LABEL "Store"'
  409.         'Item COMMAND "Info_Del" PORT' m.prg_port 'ATTRS 0x80422030 "R" LABEL "Remove"'
  410.     'EndMenu'
  411.  
  412.     'Group ATTRS 0x8042f416 2'
  413.         'Label DOUBLE LABEL' "Node:"
  414.         'String ID inf.1 NODE inf HELP' hlp.12 'ATTRS 0x80421ce7 1 COMMAND "Info_Get %s" PORT' m.prg_port
  415.         'Label DOUBLE LABEL' "Aka:"
  416.         'Group ID g5 HORIZ 0x8042866d 0 0x8042037e 1 0x80423661 1'    /* Group_Spacing  Group_SameHeight  Disabled */
  417.             'String ID aka NODE inf HELP' hlp.13 'COMMAND "Set_Aka %s" PORT' m.prg_port 'ATTRS 0x80421ce7 1'
  418.             'Object ID sl.0 CLASS' "Prop.mui" 'ATTRS 0x8042f4f3 1 0x8042d4b2 0 0x8042fbdb 80 0x80421d1f 50'    /*  Prop_Horiz  Prop_First  Prop_Entries  Weight  */
  419.         'EndGroup'
  420.         'Label DOUBLE LABEL' "Name:"
  421.         'String ID inf.2 NODE inf HELP' hlp.14 'ATTRS 0x80421ce7 1 0x80423661 1'
  422.         'Label SINGLE LABEL' "Sysop:"; 'Text ID inf.3'
  423.         'Label SINGLE LABEL' "Place:"; 'Text ID inf.4'
  424.         'Label SINGLE LABEL' "Phone:"; 'Text ID inf.5'
  425.     'EndGroup'
  426. 'EndWindow'; m.inf_win = 1
  427. 'Button ID b2 COMMAND "Info %s" DROP PORT' m.prg_port
  428. 'Button ID b2 COMMAND "Info" PRESS PORT' m.prg_port
  429. 'Item ID b4 COMMAND "Info" PORT' m.prg_port
  430. /*
  431.  *              Notify     Prop_First EveryTime         Set        BufferPos  TriggerValue */
  432. 'method ID sl.0 0x8042c9cb 0x8042d4b2 0x49893131 @aka 3 0x8042549a 0x80428b6c 0x49893131'
  433. /*
  434.  *            Notify     Enabled    EveryTime        MultiSet   Disabled   NotTriggerValue */
  435. 'method ID g1 0x8042c9cb 0x8042ed48 0x49893131 @g1 5 0x8042d356 0x80423661 0x49893133 @g5 @inf.2'
  436. CALL fun.INFO(ARG(1))
  437. 'DirList ID Wait COMMAND "Info %s" PRESS PORT' m.prg_port
  438. RETURN
  439.  
  440.  
  441. /*
  442.  *    obj_cmd(num hlp,lab,cmd,port)
  443.  */
  444. obj_cmd: PROCEDURE EXPOSE hlp.
  445. PARSE ARG num hlp .,lab,cmd,port
  446.     'Label DOUBLE LABEL' lab
  447.     'Space HORIZ 4'
  448.     IF cmd = "" THEN
  449.         'PopAsl ID pop.'num 'NODE ext_cmd HELP' hlp.hlp 'ATTRS 0x80421ce7 1 0x80424984 240'
  450.     ELSE 'PopAsl ID pop.'num 'NODE ext_cmd HELP' hlp.hlp 'COMMAND "'cmd'" PORT "'port'" ATTRS 0x80421ce7 1 0x80424984 240'
  451. RETURN
  452.  
  453. /*
  454.  *    obj_str(num,lab)
  455.  */
  456. obj_str: PROCEDURE EXPOSE hlp.
  457. PARSE ARG num hlp .,lab,cmd,port
  458.     'Label DOUBLE LABEL' lab
  459.     'PopAsl ID pop.'num 'NODE int_cmd HELP' hlp.hlp 'ATTRS 0x80421ce7 1 0x80424984 240'
  460. RETURN
  461.  
  462. /*
  463.  *    obj_sld(num,lab,min max wei)
  464.  */
  465. obj_sld: PROCEDURE
  466. PARSE ARG num,lab,min max wei .
  467.     'Label LEFT LABEL' lab
  468.     /*                        Cycle_Chain  Weight           Slider_Horiz Slider_Min        Slider_Max */
  469.     'Slider ID sl.'num 'NODE int_cmd ATTRS 0x80421ce7 1 0x80421d1f' wei '0x8042fad1 1    0x8042e404' min '0x8042d78a' max
  470. RETURN
  471.  
  472. /*
  473.  *    obj_swt(num)
  474.  */
  475. obj_swt: PROCEDURE
  476. PARSE ARG num
  477.     /*                      Weight       Text_SetVMax Cycle_Chain  Selected */
  478.     'Switch ID e'num 'ATTRS 0x80421d1f 2 0x80420d8b 0 0x80421ce7 1 0x8042654b 1 LABEL' "E"
  479.     'Switch ID r'num 'ATTRS 0x80421d1f 2 0x80420d8b 0 LABEL' "R"
  480.     /*                Notify     Selected   EveryTime            Set        Selected   NotTriggerValue */
  481.     'Method ID e'num '0x8042c9cb 0x8042654b 0x49893131 @r'num '3 0x8042549a 0x8042654b 0x49893133'
  482.     'Method ID r'num '0x8042c9cb 0x8042654b 0x49893131 @e'num '3 0x8042549a 0x8042654b 0x49893133'
  483. RETURN
  484.  
  485.